package singleton;

/**
 * 懒汉式(线程安全)
 * 使用synchronized锁住创建单例的方法,防止多个线程同时调用,避免了单例对象被多次创建;
 * 1.也就是getInstance只能运行在一个线程中
 * 2.如果一个线程已经在运行了,其他线程会被阻塞而一直等待
 * 3.可以保证多线程模式下单例对象的唯一
 * 缺点: 并发度很低,量化一下,并发度是1也就是串行化了.如果单例对象偶尔被使用,还可以接受,如果使用频繁则不能用该方法;
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2024-08-23 15:15
 */
public class Singleton_03 {
    /**
     * 1私有构造
     */
    private Singleton_03(){};
    /**
     * 2.静态全局变量
     */
    private static Singleton_03 instance;

    /**
     * 3.通过synchronized保证多线程下只能有一个线程创建实例对象
     * @return
     */
    public static synchronized Singleton_03 getInstance() {
        if (instance == null) {
            instance = new Singleton_03();
        }
        return instance;
    }
}
